昨天提到駭客暴力破解密碼的方式,我們接著這個話題繼續,最後來聊聊怎麼取一個好一些、實用一些的密碼吧!
大家自己在輸入密碼登入時,應該都有注意到多數網站會限制輸入密碼錯誤的次數,那麼駭客要怎麼快速的嘗試多組密碼呢?
要在 3 次或 5 次之內試出密碼,這樣走正規的登入顯然會被伺服器擋住,既然要想方法和伺服器周旋,那為何不直接以駭入伺服器主機為目標呢?
對耶,這樣做只要拿到主機權限,裡面所有使用者的帳號密碼就全部拿光光了!攻擊的目標從眾多的使用者被縮小成主機的管理者。但這樣做的一個問題是,主機中儲存的密碼如果被 Hash 過後,駭客也沒辦法反推回去。
但沒關係,有了這串亂碼,駭客就沒有測試的上限了!
*暴力測試密碼是否符合 Hash Code
只要拿常見的密碼測、拿字典裡的單字測、把有可能的組合都測一測,就有機會攻破某個使用者的密碼。
那麼密碼被 Hash 之後就會是安全的嗎?當然不是!
為了要驗證密碼是否是正確的,當你在登入時輸入的密碼會再被 Hash 一次,和儲存的 Hash Code 來做比對,假如是同一組密碼的話,經過 Hash 出來的結果自然就會匹配。
因此拿到所有 Hash Code 的駭客,就可以任意的嘗試密碼的組合,就像一般使用者登入一樣,把要嘗試的密碼以同樣的 Hash 函式跑過一遍,得到 Hash Code 再比對即可。
不過 Hash 過的密碼,只要原本取的好,也不是不安全的。因為現在常用的 Hash 函式,例如 SHA256,都有一個特性:就是改了一個字元就會讓整個輸出結果完全不一樣。
也就是說透過觀察 Hash Code 幾乎無法回推原始密碼為何,縱然你手中握有類似的密碼。例如 password122
和 password123
被 SHA1 這個 Hash 算法所運算出的結果,是 8dc32b0ebd38d5cc80b0aedb65dee2a96bbdfa76
以及 5eff8bb44b6170d4fd4e8636643c93ad68294982
,只差一個字元的密碼,輸出的結果卻截然不同。
講了這些密碼如何被駭客所破解的技巧,就知道取一個好密碼的重要性了!那麼一個難以破解的密碼需要什麼條件呢?
好的,以上提了幾點「較難以破解」密碼的特徵,但現實上 呢,根本做不到吧!取了一個複雜到難以記憶的密碼,下次不但輸入慢,更可能會忘記密碼。
由於怕忘記密碼,可能有些人就把密碼寫在便條紙上貼在螢幕旁,這豈不是更本末導致了?
因此好記的密碼也會是一個很重要的考量,以下幾點供大家參考。
取個長一點的密碼其實就很有效了,雖然不用字典中出現的字可以提高難度,但不方便記憶,用多一點的單字組合難度也不會太低,如:it's-a-really-long-password-la
這樣的密碼就不太容易重複到,並且比較容易記。
再來就是加入自己的規律,例如每 1, 2, 3, 5, 8, ... (Fibonacci number) 個字母大寫,像是 IT's-a-ReallY-long-pAssword-la
等等,又或是在某個位置加入特殊符號。把這樣的規律運用在每個網站,就不容易忘記了。
說到網站,用一組密碼打天下顯然不太好,但又要好記怎麼辦呢?同樣也是加入自己的規律,例如在 Google 註冊,可以把 Google 的名稱放在密碼裡,例如 googleit's-a-really-long-password-la
;若是在 Yahoo 就取 yahooit's-a-really-long-password-la
這樣放在密碼前的做法。
如此一來就可以用一組熟悉的密碼,配上不同網站專屬特性的規律組出不同的密碼。除非剛好有兩個網站同時被破解,還特地找出你的密碼差異為何,不然安全性和實用性應該都是不錯的。
想不出好密碼的話,也還能用市面一些密碼管理軟體,例如 1Password、LastPass 等等都是不錯的工具。
但在注重密碼之外,其實我們更該注意的是資安意識。
往往密碼洩漏出去不是透過上述的這些方法被硬找出來的,而可能是不小心點了釣魚網站、在網站或 Email 中分享密碼,甚至是寫在便條紙上貼在明顯的位置。